local cmd = appdf.req(appdf.GAME_SRC.."qipai.paohuzi.src.models.CMD_Game")
local table_mgr = appdf.req(appdf.GAME_SRC.."qipai.paohuzi.src.models.tablemgr")
local M = {}

function M._get_ting_cards(hand,out,out_huxi)
    --dump(hand,"hand")
	-- 需要的胡息
	local need_huxi = 10

	-- 非手牌胡息
    print("非手牌胡息---out_huxi",out_huxi)
    print("需要的胡息---need_huxi",need_huxi)
    dump(hand,"handcard")

	local result = {}
    for i = 1,20 do
        local huxi = M._get_ting_card(hand, out, need_huxi - out_huxi, i)
        if huxi >= 0 then
            if i <= 10 then
                result[i] = huxi
            else
                result[i + 6] = huxi
            end
        end
    end
    local result2={}
    for i=1,26 do
        if result[i]~=nil then
            table.insert(result2,i)
        end
    end    
    dump(result,"result")
	return result2
end

function M._get_ting_card(hand,out,need_huxi,c)
	local cards = {
		0,0,0,0,0,0,0,0,0,0,
		0,0,0,0,0,0,0,0,0,0
	}
	for _,card in ipairs(hand) do
		local i = card
		if card > 10 then
			card = card - 6
		end
		cards[card] = cards[card]+1
	end

	-- 情况1手牌有3张，胡第四张
	if cards[c] == 3 then
	    need_huxi = need_huxi - 9 
		if c >10 then
			need_huxi = need_huxi - 3
		end
		cards[c] = 0
		return M.get_huinfo(cards,need_huxi)
	end
	
	-- 是否是碰、喂的牌
	for _,v in ipairs(out) do
        --dump(v.cardData,"v.cardData---")
        --print("类型---",v.cardType)
		-- 如果是碰、喂，胡息变化
		if v.cardType == cmd.ACK_PENG and v.cardData[1] == c then
			need_huxi = need_huxi - 6  
			if c >10 then
				need_huxi = need_huxi - 5
			end		
			return M.get_huinfo(cards,need_huxi)
		elseif v.cardType == cmd.ACK_WEI and v.cardData[1] == c then
			need_huxi = need_huxi - 6  
			return M.get_huinfo(cards,need_huxi)		
		end
	end

   	-- 计算非手牌的胡息
	cards[c] = cards[c] + 1

    -- 不能配顺，绞
   --[[ if cards[c] == 0 then
        local small = c
        if c > 10 then
            small = c - 10
        end
        local big = small + 10
        if cards[small]+cards[big] <  3 then
            if (cards[c-2] or 0) * (cards[c-1] or 0) == 0 then
                if (cards[c-1] or 0) * (cards[c+1] or 0) == 0 then
                    if (cards[c+1] or 0) * (cards[c+2] or 0) == 0 then
                        if small ~= 2 and small ~= 7 and small ~= 10 then
                            return -1
                        end
                        if c <= 10 then
                            if (cards[2] or 0)*(cards[7] or 0)*(cards[10] or 0)== 0 then
                                return -1
                            end
                        else
                            if (cards[12] or 0)*(cards[17] or 0)*(cards[20] or 0)== 0 then
                                return -1
                            end
                        end
                    end
                end
            end
        end
    end ]]--

    --dump(cards,"cards:")
	return M.get_huinfo(cards,need_huxi,c)
end

--[[
local tbl_huxi = {
	-- 大2小2  1-9
	{[11]=2,[12]=2,[13]=2,[1]=2,[2]=2,[3]=2,huxi=18},
	{[11]=2,[12]=2,[13]=2,[2]=2,[7]=2,[10]=2,huxi=18},
	{[11]=2,[12]=2,[13]=2,[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=18},
	{[12]=2,[17]=2,[20]=2,[1]=2,[2]=2,[3]=2,huxi=18},
	{[12]=2,[17]=2,[20]=2,[2]=2,[7]=2,[10]=2,huxi=18},
	{[12]=2,[17]=2,[20]=2,[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=18},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,[1]=2,[2]=2,[3]=2,huxi=18},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,[2]=2,[7]=2,[10]=2,huxi=18},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=18},
	-- 大2小1  10-15
	{[11]=2,[12]=2,[13]=2,[1]=1,[2]=1,[3]=1,huxi=15},
	{[11]=2,[12]=2,[13]=2,[2]=1,[7]=1,[10]=1,huxi=15},
	{[12]=2,[17]=2,[20]=2,[1]=1,[2]=1,[3]=1,huxi=15},
	{[12]=2,[17]=2,[20]=2,[2]=1,[7]=1,[10]=1,huxi=15},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,[1]=1,[2]=1,[3]=1,huxi=15},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,[2]=1,[7]=1,[10]=1,huxi=15},
	-- 大2小0 16-18
	{[11]=2,[12]=2,[13]=2,huxi=12},
	{[12]=2,[17]=2,[20]=2,huxi=12},
	{[11]=1,[12]=2,[13]=1,[17]=1,[20]=1,huxi=12},
	-- 大1小2 19-24
	{[11]=1,[12]=1,[13]=1,[1]=2,[2]=2,[3]=2,huxi=12},
	{[11]=1,[12]=1,[13]=1,[2]=1,[7]=1,[10]=1,huxi=12},
	{[11]=1,[12]=1,[13]=1,[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=12},
	{[12]=1,[17]=1,[20]=1,[1]=2,[2]=2,[3]=2,huxi=12},
	{[12]=1,[17]=1,[20]=1,[2]=2,[7]=2,[10]=2,huxi=12},
	{[12]=1,[17]=1,[20]=1,[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=12},
	-- 大1小1  25-28
	{[11]=1,[12]=1,[13]=1,[1]=1,[2]=1,[3]=1,huxi=9},
	{[11]=1,[12]=1,[13]=1,[2]=1,[7]=1,[10]=1,huxi=9},
	{[12]=1,[17]=1,[20]=1,[1]=1,[2]=1,[3]=1,huxi=9},
	{[12]=1,[17]=1,[20]=1,[2]=1,[7]=1,[10]=1,huxi=9},
	-- 大1小0  29-30
	{[11]=1,[12]=1,[13]=1,huxi=6},
	{[12]=1,[17]=1,[20]=1,huxi=6},
	-- 大0小2  31-33
	{[1]=2,[2]=2,[3]=2,huxi=6},
	{[2]=2,[7]=2,[10]=2,huxi=6},
	{[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,huxi=6},
	-- 大0小1  34-35
	{[1]=1,[2]=1,[3]=1,huxi=3},
	{[2]=1,[7]=1,[10]=1,huxi=3},
	-- 大0小0
} ]]--

local tbl_huxi = {[1]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=2,[12]=2,[13]=1,[15]=1,[20]=2,[17]=1,["huxi"]=27,},[2]={[1]=1,[2]=1,[5]=1,[7]=1,[10]=2,[11]=2,[12]=2,[13]=1,[15]=1,[20]=2,[17]=1,["huxi"]=24,},[3]={["huxi"]=24,[17]=1,[2]=2,[20]=2,[7]=2,[10]=2,[11]=2,[12]=2,[13]=1,[15]=1,},[4]={[1]=2,[2]=2,[3]=2,["huxi"]=24,[17]=1,[11]=2,[12]=2,[13]=1,[20]=2,[15]=1,},[5]={[1]=2,["huxi"]=24,[17]=1,[20]=2,[5]=2,[10]=2,[11]=2,[12]=2,[13]=1,[15]=1,},[6]={[1]=2,[2]=1,[3]=1,[5]=1,[10]=1,[11]=2,[12]=2,[13]=1,[15]=1,[20]=2,[17]=1,["huxi"]=24,},[7]={[1]=1,[2]=2,[3]=1,[7]=1,[10]=1,[11]=2,[12]=2,[13]=1,[15]=1,[20]=2,[17]=1,["huxi"]=24,},[8]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,["huxi"]=21,[17]=2,[10]=2,[20]=2,[12]=2,},[9]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=1,[12]=1,[15]=1,[20]=2,[17]=1,["huxi"]=21,},[10]={[1]=1,["huxi"]=21,[17]=1,[20]=2,[5]=1,[10]=1,[11]=2,[12]=2,[13]=1,[15]=1,},[11]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,["huxi"]=21,[10]=2,[11]=2,[20]=2,[15]=2,},[12]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=1,[12]=2,[13]=1,[20]=1,[17]=1,["huxi"]=21,},[13]={["huxi"]=21,[17]=1,[2]=1,[20]=2,[7]=1,[10]=1,[11]=2,[12]=2,[13]=1,[15]=1,},[14]={[1]=1,[2]=1,[3]=1,["huxi"]=21,[17]=1,[11]=2,[12]=2,[13]=1,[20]=2,[15]=1,},[15]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=2,[12]=2,[13]=2,["huxi"]=21,},[16]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=2,[12]=1,[13]=1,[15]=1,[20]=1,["huxi"]=21,},[17]={["huxi"]=18,[17]=1,[2]=2,[20]=1,[7]=2,[10]=2,[11]=1,[12]=2,[13]=1,},[18]={["huxi"]=18,[2]=2,[11]=2,[20]=2,[15]=2,[10]=2,[7]=2,},[19]={[1]=1,[2]=1,["huxi"]=18,[17]=1,[20]=2,[5]=1,[7]=1,[10]=2,[11]=1,[12]=1,[15]=1,},[20]={["huxi"]=18,[17]=1,[2]=2,[20]=2,[7]=2,[10]=2,[11]=1,[12]=1,[15]=1,},[21]={[1]=1,[2]=1,["huxi"]=18,[17]=2,[10]=2,[12]=2,[5]=1,[20]=2,[7]=1,},[22]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[10]=1,[11]=2,[20]=2,[15]=2,[7]=1,},[23]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[17]=2,[10]=1,[12]=2,[20]=2,[7]=1,},[24]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[17]=1,[10]=1,[11]=1,[12]=1,[20]=2,[15]=1,[7]=1,},[25]={[1]=1,[2]=1,["huxi"]=18,[10]=2,[11]=2,[20]=2,[5]=1,[15]=2,[7]=1,},[26]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[20]=1,[10]=1,[11]=2,[12]=1,[13]=1,[15]=1,[7]=1,},[27]={[1]=2,["huxi"]=18,[20]=1,[10]=2,[11]=2,[12]=1,[5]=2,[13]=1,[15]=1,},[28]={["huxi"]=18,[17]=2,[2]=2,[12]=2,[20]=2,[10]=2,[7]=2,},[29]={[1]=2,["huxi"]=18,[10]=2,[11]=2,[12]=2,[5]=2,[13]=2,},[30]={["huxi"]=18,[2]=2,[11]=2,[12]=2,[13]=2,[10]=2,[7]=2,},[31]={[1]=2,["huxi"]=18,[17]=1,[10]=2,[11]=1,[12]=1,[5]=2,[20]=2,[15]=1,},[32]={[1]=2,["huxi"]=18,[17]=2,[10]=2,[12]=2,[5]=2,[20]=2,},[33]={["huxi"]=18,[2]=2,[20]=1,[7]=2,[10]=2,[11]=2,[12]=1,[13]=1,[15]=1,},[34]={[1]=2,["huxi"]=18,[10]=2,[11]=2,[20]=2,[5]=2,[15]=2,},[35]={[1]=1,[2]=1,["huxi"]=18,[17]=1,[20]=1,[5]=1,[7]=1,[10]=2,[11]=1,[12]=2,[13]=1,},[36]={[1]=1,[2]=1,["huxi"]=18,[10]=2,[11]=2,[12]=2,[5]=1,[13]=2,[7]=1,},[37]={[1]=1,[2]=1,[5]=1,[7]=1,[10]=2,[11]=2,[12]=1,[13]=1,[15]=1,[20]=1,["huxi"]=18,},[38]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[17]=1,[10]=1,[11]=1,[12]=2,[13]=1,[20]=1,[7]=1,},[39]={[1]=2,["huxi"]=18,[17]=1,[10]=2,[11]=1,[12]=2,[5]=2,[20]=1,[13]=1,},[40]={[1]=1,[2]=2,[3]=1,["huxi"]=18,[10]=1,[11]=2,[12]=2,[13]=2,[7]=1,},[41]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[20]=1,[10]=1,[11]=2,[12]=1,[5]=1,[13]=1,[15]=1,},[42]={[1]=2,[2]=2,[3]=2,["huxi"]=18,[17]=1,[11]=1,[12]=1,[20]=2,[15]=1,},[43]={[1]=2,[2]=2,[3]=2,[12]=2,[17]=2,["huxi"]=18,[20]=2,},[44]={["huxi"]=18,[17]=1,[11]=2,[12]=2,[13]=1,[20]=2,[15]=1,},[45]={[1]=2,[2]=2,[3]=2,[20]=2,["huxi"]=18,[15]=2,[11]=2,},[46]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[17]=1,[10]=1,[11]=1,[12]=2,[5]=1,[20]=1,[13]=1,},[47]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[10]=1,[11]=2,[12]=2,[5]=1,[13]=2,},[48]={[1]=2,[2]=2,[3]=2,["huxi"]=18,[17]=1,[11]=1,[12]=2,[13]=1,[20]=1,},[49]={[1]=2,[2]=2,[3]=2,["huxi"]=18,[11]=2,[12]=1,[13]=1,[20]=1,[15]=1,},[50]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[17]=2,[10]=1,[12]=2,[5]=1,[20]=2,},[51]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[17]=1,[10]=1,[11]=1,[12]=1,[5]=1,[20]=2,[15]=1,},[52]={[1]=2,[2]=2,[3]=2,[12]=2,[13]=2,["huxi"]=18,[11]=2,},[53]={[1]=2,[2]=1,[3]=1,["huxi"]=18,[10]=1,[11]=2,[20]=2,[5]=1,[15]=2,},[54]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,[11]=1,[12]=1,[13]=1,["huxi"]=15,},[55]={[1]=1,["huxi"]=15,[10]=1,[11]=2,[12]=2,[5]=1,[13]=2,},[56]={[1]=1,["huxi"]=15,[20]=1,[10]=1,[11]=2,[12]=1,[5]=1,[13]=1,[15]=1,},[57]={[1]=1,["huxi"]=15,[17]=2,[10]=1,[12]=2,[5]=1,[20]=2,},[58]={[1]=1,["huxi"]=15,[10]=1,[11]=2,[20]=2,[5]=1,[15]=2,},[59]={[1]=1,["huxi"]=15,[17]=1,[10]=1,[11]=1,[12]=1,[5]=1,[20]=2,[15]=1,},[60]={["huxi"]=15,[2]=1,[20]=1,[7]=1,[10]=1,[11]=2,[12]=1,[13]=1,[15]=1,},[61]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,["huxi"]=15,[17]=1,[10]=2,[20]=1,[12]=1,},[62]={["huxi"]=15,[2]=1,[11]=2,[20]=2,[15]=2,[10]=1,[7]=1,},[63]={[1]=1,[2]=1,[3]=1,[12]=2,[13]=2,["huxi"]=15,[11]=2,},[64]={[1]=1,[2]=1,[3]=1,["huxi"]=15,[17]=1,[11]=1,[12]=2,[13]=1,[20]=1,},[65]={["huxi"]=15,[17]=1,[2]=1,[20]=2,[7]=1,[10]=1,[11]=1,[12]=1,[15]=1,},[66]={["huxi"]=15,[2]=1,[11]=2,[12]=2,[13]=2,[10]=1,[7]=1,},[67]={[1]=1,["huxi"]=15,[17]=1,[10]=1,[11]=1,[12]=2,[5]=1,[20]=1,[13]=1,},[68]={["huxi"]=15,[17]=2,[2]=1,[12]=2,[20]=2,[10]=1,[7]=1,},[69]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,["huxi"]=15,[10]=2,[11]=1,[20]=1,[15]=1,},[70]={[1]=1,[2]=1,[3]=1,["huxi"]=15,[11]=2,[12]=1,[13]=1,[20]=1,[15]=1,},[71]={["huxi"]=15,[17]=1,[2]=1,[20]=1,[7]=1,[10]=1,[11]=1,[12]=2,[13]=1,},[72]={[1]=1,[2]=1,[3]=1,[20]=2,["huxi"]=15,[15]=2,[11]=2,},[73]={[1]=1,[2]=1,[3]=1,["huxi"]=15,[17]=1,[11]=1,[12]=1,[20]=2,[15]=1,},[74]={[1]=1,[2]=1,[3]=1,[12]=2,[17]=2,["huxi"]=15,[20]=2,},[75]={[12]=2,[13]=2,["huxi"]=12,[11]=2,},[76]={["huxi"]=12,[17]=1,[11]=1,[12]=2,[13]=1,[20]=1,},[77]={["huxi"]=12,[17]=1,[11]=1,[12]=1,[20]=2,[15]=1,},[78]={[12]=2,[17]=2,["huxi"]=12,[20]=2,},[79]={["huxi"]=12,[2]=2,[11]=1,[20]=1,[15]=1,[10]=2,[7]=2,},[80]={["huxi"]=12,[17]=1,[2]=2,[12]=1,[20]=1,[10]=2,[7]=2,},[81]={["huxi"]=12,[2]=2,[11]=1,[12]=1,[13]=1,[10]=2,[7]=2,},[82]={["huxi"]=12,[11]=2,[12]=1,[13]=1,[20]=1,[15]=1,},[83]={[20]=2,["huxi"]=12,[15]=2,[11]=2,},[84]={[1]=1,[2]=2,[3]=1,["huxi"]=12,[10]=1,[11]=1,[20]=1,[15]=1,[7]=1,},[85]={[1]=2,["huxi"]=12,[10]=2,[11]=1,[12]=1,[5]=2,[13]=1,},[86]={[1]=2,[2]=1,[3]=1,["huxi"]=12,[10]=1,[11]=1,[12]=1,[5]=1,[13]=1,},[87]={[1]=1,[2]=2,[3]=1,["huxi"]=12,[17]=1,[10]=1,[12]=1,[20]=1,[7]=1,},[88]={[1]=2,[2]=1,[3]=1,["huxi"]=12,[17]=1,[10]=1,[12]=1,[5]=1,[20]=1,},[89]={[1]=1,[2]=2,[3]=1,["huxi"]=12,[10]=1,[11]=1,[12]=1,[13]=1,[7]=1,},[90]={[1]=2,[2]=1,[3]=1,["huxi"]=12,[10]=1,[11]=1,[20]=1,[5]=1,[15]=1,},[91]={[1]=2,["huxi"]=12,[10]=2,[11]=1,[20]=1,[5]=2,[15]=1,},[92]={[1]=2,["huxi"]=12,[17]=1,[10]=2,[12]=1,[5]=2,[20]=1,},[93]={[1]=2,[2]=2,[3]=2,[20]=1,["huxi"]=12,[15]=1,[11]=1,},[94]={[1]=1,[2]=1,["huxi"]=12,[10]=2,[11]=1,[20]=1,[5]=1,[15]=1,[7]=1,},[95]={[1]=1,[2]=1,["huxi"]=12,[17]=1,[10]=2,[12]=1,[5]=1,[20]=1,[7]=1,},[96]={[1]=2,[2]=2,[3]=2,[12]=1,[13]=1,["huxi"]=12,[11]=1,},[97]={[1]=2,[2]=2,[3]=2,[12]=1,[17]=1,["huxi"]=12,[20]=1,},[98]={[1]=1,[2]=1,["huxi"]=12,[10]=2,[11]=1,[12]=1,[5]=1,[13]=1,[7]=1,},[99]={[1]=2,[2]=2,[3]=1,[5]=1,[7]=1,[10]=2,["huxi"]=9,},[100]={["huxi"]=9,[17]=1,[2]=1,[12]=1,[20]=1,[10]=1,[7]=1,},[101]={["huxi"]=9,[2]=1,[11]=1,[20]=1,[15]=1,[10]=1,[7]=1,},[102]={[1]=1,["huxi"]=9,[10]=1,[11]=1,[12]=1,[5]=1,[13]=1,},[103]={[1]=1,["huxi"]=9,[17]=1,[10]=1,[12]=1,[5]=1,[20]=1,},[104]={[1]=1,[2]=1,[3]=1,[12]=1,[13]=1,["huxi"]=9,[11]=1,},[105]={[1]=1,[2]=1,[3]=1,[20]=1,["huxi"]=9,[15]=1,[11]=1,},[106]={[1]=1,[2]=1,[3]=1,[12]=1,[17]=1,["huxi"]=9,[20]=1,},[107]={[1]=1,["huxi"]=9,[10]=1,[11]=1,[20]=1,[5]=1,[15]=1,},[108]={["huxi"]=9,[2]=1,[11]=1,[12]=1,[13]=1,[10]=1,[7]=1,},[109]={[1]=2,[2]=2,[3]=2,["huxi"]=6,},[110]={["huxi"]=6,[10]=2,[2]=2,[7]=2,},[111]={[12]=1,[17]=1,["huxi"]=6,[20]=1,},[112]={[1]=2,[2]=1,[3]=1,["huxi"]=6,[5]=1,[10]=1,},[113]={[1]=1,[2]=1,["huxi"]=6,[5]=1,[10]=2,[7]=1,},[114]={[20]=1,["huxi"]=6,[15]=1,[11]=1,},[115]={[1]=2,["huxi"]=6,[5]=2,[10]=2,},[116]={[1]=1,[2]=2,[3]=1,["huxi"]=6,[10]=1,[7]=1,},[117]={[12]=1,[13]=1,["huxi"]=6,[11]=1,},[118]={[1]=1,["huxi"]=3,[5]=1,[10]=1,},[119]={["huxi"]=3,[10]=1,[2]=1,[7]=1,},[120]={[1]=1,[2]=1,[3]=1,["huxi"]=3,},}

local tbl_split = {
	-- 1顺子
	{[0]=0,[10]=1,[11]=1,[12]=1},
	{[0]=1,[1]=1,[2]=1,[10]=0},
	-- 2顺子
	{[0]=0,[10]=2,[11]=2,[12]=2},
	{[0]=2,[1]=2,[2]=2,[10]=0},
	{[0]=1,[1]=1,[2]=1,[10]=1,[11]=1,[12]=1},
	-- 3顺子
	{[0]=1,[1]=1,[2]=1,[10]=2,[11]=2,[12]=2},
	{[0]=2,[1]=2,[2]=2,[10]=1,[11]=1,[12]=1},
	-- 1绞
	{[0]=1,[10]=2},
	{[0]=2,[10]=1},
	-- 1绞一顺
	{[0]=2,[10]=2,[11]=1,[12]=1},
	{[0]=2,[1]=1,[2]=1,[10]=2},
    -- 1绞1顺
	{[0]=1,[10]=3,[11]=1,[12]=1},
	{[0]=3,[1]=1,[2]=1,[10]=1},
}

local function can_hu(cards,i)
    if i > 10 then
        return true
    end
	while cards[i]+cards[i+10] == 0 do
		if i == 10 then
			return true
		end
		i = i + 1
	end
    print("i=",i)
	for split_index,split in ipairs(tbl_split) do
		if split[0]==cards[i] and split[10]==cards[i+10] then
			local can = true
			if (split[2] and (i+2>10 or cards[i+2]<split[2])) or (split[1] and (i+1>10 or cards[i+1]<split[1])) then
                can = false
			end
			
			if (split[12] and (i+12>20 or cards[i+12]<split[12])) or (split[11] and (i+11>20 or cards[i+11]<split[11])) then
				can = false
			end
			if can then
				-- 扣除相关牌
				for k,v in pairs(split) do
					cards[i+k] = cards[i+k] - v
				end
				if can_hu(cards,i+1) then
					return true
				end
				-- 加回相关牌
				for k,v in pairs(split) do
					cards[i+k] = cards[i+k] + v
				end
			end
		end
	end

	return false
end

function M.get_huinfo(cards,need_huxi,c)
    if not c or cards[c] < 3 then
        return M.get_huinfo_self(cards,need_huxi,c)
    end

    local self_huxi = M.get_huinfo_self(cards,need_huxi,c)
    local other_huxi = M.get_huinfo_other(cards,need_huxi,c)

    local max = self_huxi
    if other_huxi > self_huxi then
        max = other_huxi
    end
    return max
end

function M.get_huinfo_self(cards,need_huxi,c)
	local tcards = {
		0,0,0,0,0,0,0,0,0,0,
		0,0,0,0,0,0,0,0,0,0
	}
	local sum = 0
	local kan_huxi = 0
	for i,v in pairs(cards) do
		if v < 3 then
			tcards[i] = v
		else
			kan_huxi = kan_huxi + 3
			if i > 10 then
				kan_huxi = kan_huxi + 3
			end
		end
		sum = sum + v
	end
	
	if sum % 3 == 0 then
		local ret = M._get_huinfo(tcards,need_huxi)
		if ret >= 0 then
			return ret + kan_huxi
		end
		return -1
	end

	-- 有将的情况
	for i=10,1,-1 do
		if tcards[i] == 2 then
			tcards[i] = 0
			local ret = M._get_huinfo(tcards,need_huxi)
			if ret >= 0 then
				return ret + kan_huxi
			end
			tcards[i] = 2
		end
	end
	
	for i=20,11,-1 do
		if tcards[i] == 2 then
			tcards[i] = 0
			local ret = M._get_huinfo(tcards,need_huxi)
			if ret >= 0 then
				return ret + kan_huxi
			end
			tcards[i] = 2
		end
	end
	
	return -1
end

function M.get_huinfo_other(cards,need_huxi,c)
    print("get_huinfo_other")
	local tcards = {
		0,0,0,0,0,0,0,0,0,0,
		0,0,0,0,0,0,0,0,0,0
	}
	local sum = 0
	local kan_huxi = 0
	for i,v in pairs(cards) do
		if v < 3 or i == c then
			tcards[i] = v
		else
			kan_huxi = kan_huxi + 3
			if i > 10 then
				kan_huxi = kan_huxi + 3
			end
		end
		sum = sum + v
	end
	
	if sum % 3 == 0 then
		local ret = M._get_huinfo(tcards,need_huxi)
		if ret >= 0 then
			return ret + kan_huxi
		end
		return -1
	end

	-- 有将的情况
	for i=10,1,-1 do
		if tcards[i] == 2 or i==c then
			tcards[i] = 0
			local ret = M._get_huinfo(tcards,need_huxi)
			if ret >= 0 then
				return ret + kan_huxi
			end
			tcards[i] = 2
            if i == c then
                tcards[i] = 3
            end
		end
	end
	
	for i=20,11,-1 do
		if tcards[i] == 2 then
			tcards[i] = 0
			local ret = M._get_huinfo(tcards,need_huxi)
			if ret >= 0 then
				return ret + kan_huxi
			end
			tcards[i] = 2
		end
	end
	
	return -1
end

function M._get_huinfo(cards,need_huxi)
    
	for k,v in ipairs(tbl_huxi) do
		if v.huxi < need_huxi then
			return -1
		end
		-- 检查相应牌
		local check = true
		for card,num in pairs(v) do
			if type(card)=="number" and cards[card] < num then
				check = false
				break
			end
		end
		
		if check then
			-- 扣除相应牌
			for card,num in pairs(v) do
				if type(card) == "number" then
					cards[card] = cards[card] - num
				end
			end
			
			if can_hu(cards,1) then
				return v.huxi
			end

			-- 加回相应牌
			for card,num in pairs(v) do
				if type(card) == "number" then
					cards[card] = cards[card] + num
				end
			end
		end
	end
	if can_hu(cards,1) then
		return 0
	end
	return -1
end

return M
